一 变量分类
1 实例变量
__init__(self,value)
self代表实例对象,value代表实例变量
self.value=value 实例变量的初始化
实例变量能赋初始化值 __init__本质是一个函数,所以变量的规则完全适用
2 类变量
类变量是定义在函数外的变量,可以理解为类的全局变量.类变量可以被实例继承修改
3 调用方式
公有调用
私有调用
class a:
__d='wewa' //私有类变量
c='we' //类变量
def __init__(self,a):
self.__name__=name //私有变量
self.a=a //实例变量
def func(self):
print(self.a)//内部调用变量
print(self._name)//内部调用私有变量
b=a('awe')
b.a//外部调用实例变量
b.func()//调用函数
b.c//调用类变量
二 方法
1 实例方法
2 静态方法
定义 @staticmethod
调用 类.method(推荐)可以被实例继承调用
场景 如果方法中无需调用实例化变量的值
3 类方法
定义 @classmethod
注意 cls参数代表带入类本身
方法转属性
定义 @proprety
注意 只能有self 不能加参数
调用 object.a不加括号
场景 有返回值而且无需参数场景
class test(object):
def __init__(self,a):
self.a=a
def fun(self):
print(self.a)
@staticmethod //定义静态方法
def display(): //无self
print("23")
@classmethod //定义类方法
def aaa(cls): // cls
print("2323")
def __aaa(self)://定义私有方法
print(self.a)
@proprety://将方法定义为属性
def ccc(self):
return 3
b=test('wae')
b.fun() //调用实例方法
test.display() //定义静态方法
test.aaa() //定义
b.ccc//这里已经变为了属性
三 继承
大概有两种情况
1 实例化调用父类相关属性
实例.变量 实例.方法
2 子类函数内部调用父类相关
变量super().__init__
函数super().method //按照继承的顺序找下一个类
3 函数重写
当子类重写了父类的方法,默认是调用自身的方法。
4 总结
0 每个类都有构造函数,继承类在生成对象的时候,是不会自动调用父类的构造函数的,必须显示进行调用
1 Python3.x 和 Python2.x 的一个区别是: Python 3 可以使用直接使用 super().xxx 代替 super(Class, self).xxx :
2 有几种情况
1 是完全继承变量 super().__init__(父类)
2 需要部分变量初始化值 super().__init__(k1ey='',k2ey=''),规则完全遵循函数参数赋值规则
3 调用父类函数 super().function(x)
3 示例代码
class Root(object):
def __init__(self,x,y=0):
self.x = x
self.y = y
def add(self, x):
y = x + 1
print(y) class A(Root):
def __init__(self):
super().__init__(x='1232133')
print('实例化时执行')
def fund(self,x):
super().add(x) test = A() # 实例化类
test.add(12)
返回值调用方式 return/yeild