python的类写法_Python3 类静态数据的写法
首先。。。Python和Java不一样,是解释性的语言,走到哪儿,才会有什么东西。Python在开始定义你写的Complex类时,还并没有完成Complex类,所以不能实例化。
所以那就延后定义吧。。。比如在生成第一个对象之前,用简单的装饰器吧。
def lazy(clazz):
clazz.ZERO = clazz(0, 0)
clazz.ONE = clazz(1, 0)
return clazz
@lazy
class Complex:
def __init__(self, real, imag):
self._real = real
self._imag = imag
# 改善后的写法, 但是无法在class级别进行缓存
# 而且变成了函数调用, 非我本意
def get_real(self):
return self._real
def get_imag(self):
return self._imag
def __repr__(self):
return 'Complex(%s, %s)' % (self._real, self._imag)
这样就是Python的‘类变量‘了。不过Python没有严格的private属性(虽然Java也可以反射访问==)
另外,用元类也可以,算是高级的装饰器
class Meta(type):
def __new__(cls, name, bases, attrs):
clazz = type.__new__(cls, name, bases, attrs)
clazz.ZERO = clazz(0, 0)
clazz.ONE = clazz(1, 0)
return clazz
class Complex(metaclass=Meta):
def __init__(self, real, imag):
self._real = real
self._imag = imag
# 改善后的写法, 但是无法在class级别进行缓存
# 而且变成了函数调用, 非我本意
@classmethod
def zero(cls):
return cls(0, 0)
@classmethod
def one(cls):
return cls(1, 0)
def get_real(self):
return self._real
def get_imag(self):
return self._imag
def __repr__(self):
return 'Complex(%s, %s)' % (self._real, self._imag)
或者最简单的,在第一次实例化的时候检测,但是代码就比较难看了。处理递归之类的。。。
python的类写法_Python3 类静态数据的写法相关推荐
- 实现客户机(Client)类声明字符型静态数据成员ServerName,保存其服务器名称;整型静态数据成员ClientNum,记录已定义的客户机数量;定义静态函数成员ChangeServerName
实现客户机(Client)类.声明字符型静态数据成员ServerName,保存其服务器名称:整型静态数据成员ClientNum,记录已定义的客户机数量:定义静态函数成员ChangeServerName ...
- [C++] 类的静态成员 (静态数据成员 和 静态成员函数)
目录 一.声明静态成员: 二.定义静态成员: 三.使用类的静态成员: 四.静态成员类内初始化: 五.静态成员与普通成员的区别: 六.案例代码: 类内的静态成员包括: 静态数据成员 和 静态成员函数. ...
- python数据库建表_Python3创建mysql数据表结构和插入数据
上一篇文章,我们已经成功通过 python3 连接到了数据库并新建了 spiders 数据库,今天我们就继续来学习 python3 如何创建 mysql 数据表及插入数据. import pymysq ...
- qt 不允许 dllimport 静态数据成员 的定义_C++类和对象的定义
想用机器人赋能未来,少不了扎实的编程基本功,让我们跟着清华大学的C++语言程序课程一起过一遍C++的语法知识吧! C++语言特点--面向对象的程序设计 对象是现实中的对象在程序中的模拟,类是同一类对象 ...
- 类的静态成员函数和静态数据成员
一.静态数据成员 1.定义: 静态数据成员就是给类的普通数据成员加上关键字static. 2.访问规则 静态数据成员也遵守public/protected/private访问规则 访问静态成员时,则可 ...
- 类的静态数据成员和静态成员函数浅析
一.静态数据成员 类中的数据成员声明前加上static,则表示该数据成员为静态数据成员.除了与其他数据具有相同的public/private/protect访问属性外,还有一些其他的属性 ...
- c++对象长度之静态数据成员(3)
当类中定义了静态数据成员.当类中定义了静态数据成员时,由于静态数据成员与静态变量原理相同(是一个含有作用域的特殊全局变量),因此该静态数据成员的初值会被写入编译链接后的执行文件中.当程序被加载时,操作 ...
- C++类静态成员与类静态成员函数
当将类的某个数据成员声明为static时,该静态数据成员只能被定义一次,而且要被同类的所有对象共享.各个对象都拥有类中每一个普通数据成员的副本,但静态数据成员只有一个实例存在,与定义了多少类对象 ...
- 什么是静态成员(静态数据成员和静态函数成员)
目录 一:静态成员: 二:静态数据成员: 三:静态数据成员的特点: 四:访问静态数据成员 五:静态函数成员,如何定义成员函数 六:静态数据成员的特点. 一:静态成员: 在c++类中声明成员时, 加上s ...
最新文章
- 又一次 Java 内存泄漏排查,新技能+1
- flex 动态显示时间
- iOS开发之自定义View
- ASP.NET MVC区域
- Java中的数据类型及相互转换方法
- python与用户交互、数据类型
- linux 编译查看链接库详情,Linux环境下的编译,链接与库的使用
- native c++ 之javah
- SpringMvc之参数绑定注解详解之一
- Android定时器AlarmManager(定时发送广播)
- RoR介绍:一个Java程序员的开发体验
- HTML汇率转换代码,利用JS实现汇率转换工具
- ocr初始化失败怎么办_应用程序正常初始化失败
- YOLOv5训练时出现Corrupt JPEG data: 2 extraneous bytes before marker 0xd9
- Android 密钥库系统 (一)
- 抖音变现模式?80%的人都不知道的秘密,三类更适合玩私域的产品
- 遇到vcruntime140_1.dll 无法继续执行代码问题
- python导入siri_python实现一个简洁siri功能
- 什么是seo?seo的定义
- 伪静态 真伪静态的区别