类__成员,方法,属性,私有
一.类成员.
你再类中写的一切都是类成员.
__init__(self)和method都属于类的成员方法,又称为实例方法,总之这样的东西需要用对象来访问.
二.类_变量.
1)实例变量(字段\成员变量)
就是每个实例都应该拥有的变量,比如,人的名字,爱好,每个人的个人信息都属于实例变量,
2)类变量(静态变量),访问类变量最好是用类名去访问,用对象名访问,只能看,不能变类变量.
实例对象不可以重新赋值类变量,否则会在实例对象的内存中创建此变量和值
要修改只能用类去修改.举例说明:
三、类_方法.
对象直接访问的方法叫实例方法(成员方法):
静态方法:
静态方法,不需要我们给方法传递self.当出现一个方法不需要使用到成员变量的时候,就可以使用静态方法.
语法:在方法上面加一个@staticmethod
面试题: 类方法/静态方法和实例方法有什么区别?
类方法:类方法需要在参数列表中的第一个位置预留一个位置,通常我们给第一个参数起名字叫cls.
类方法被调用的时候也不需要传递实例对象,但是,系统会自动的吧类传递给第一个参数,语法:需要在类的函数上加个@classmethod
类方法只能使用内置的类属性,无法使用在__init__ 中声明的属性。
静态方法:和静态变量差不多,一般都是使用类名直接访问和调用的,静态方法不需要我们给方法传递self.
语法:类函数上面加个@staticmethod
实例方法:实例方法需要将类实例化后调用,如果使用类直接调用实例方法,需要显式地将实例作为参数传入。
四.类的属性.
属性其实就是通过方法改造过来的一种变量的写法,在方法上添加一个@property就可以了
应用场景:我们不会保存一个人的年龄,因为随着时间的推移,年龄都时刻在改变着,但是对于年龄这个属性而言,它应该是个数值,而不是动作,所以它存在的意义就是,通过方法描述一个属性.
注意点:调用的时候,我们不需要写括号,直接当成属性变量来用 2.这种套路只能取值,不能设置值.
class Person: def __init__(self): pass @property #设置属性方法 def age(self): return 1 p = Person() age = p.age print(age)
五.类_私有.
私有方法只能在类中自己调用,它包括(类变量,实例变量,成员方法)类外面不能访问,但是可以通过设置开放的方法,来实现类外界也可以访问
注意点:对于私有的内容,字类无法继承
class Student: def __init__(self): self.__A = 10 def func(self): print(self.__A) c = Student() c.__A = 11 print(c.__A) c.func()