Python笔记:面向对象(类)
1、类定义:Python3中,如果新建的类没有继承任何其他类,默认继承基础类object。Python2中如果没有显式继承object类就是经典类,而显式继承了object类就是新式类,Python2推荐使用新式类。 2、类变量:类变量就是直接在类中,但是在方法外定义的变量。类变量是所有该类的实例所共有的,且类的每个实例都可以修改类变量。 3、成员变量:成员变量就是在定义时加了self前缀的变量,一般在__init__方法就定义了,成员变量会跟着实例“一起走”。 4、类的继承:直接在类后括号里加上要继承的类就行,继承多个类时,类之间用逗号分隔即可。 5、成员方法:新建方法时默认为新建一个成员方法,方法的第一个参数必须为self,self代表着实例本身,相当于每次都会将实例本身当参数传进去。 6、类方法:方法“头上”加上装饰器@classmethod,方法的第一个参数必须为cls,代表着类本身。 7、静态方法:方法“头上”加上装饰器@staticmethod,即普通函数,参数没有强制要求。 8、特殊方法:
类的简单示例: # 推荐使用新式类,即继承object examp1 = FirstClass('hi',hello') examp2 = FirstClass(pythonjava) examp1.func1() examp2.func1() examp1.func2(hei!) print(examp1.var1) (examp2.var2) (examp2.para1) (examp1.para2) (examp1.para3) 输出: hello,guys! hello,guys! 30 50 python hello hei! ?11、@property:该装饰器用于定义类属性的get方法和set方法,在一个方法上使用@property,该方法名就会成为外部访问对应属性的属性名,并且会自动生成一个xxx.setter的装饰器,用于定义对应的set方法,注意get方法和set方法的方法名都是一样的。@property一般用于保护属性或者私有属性,因为公共属性在哪都可以访问和修改,没有必要再去定义@property方法。 @property的简单示例: class MyClass: def __init__(self): # 前面加两个下划线表示私有属性,外部不可访问 这里为了方便测试,看到运行后的效果,定义为私有属性 需要用到@property的属性一般定义为保护或者私有, 不然公共的属性,谁都可以访问和修改,就没必要使用@property self.__var = 0 加了@property后,函数名my_var自动成为外部访问的属性名,即get方法,而外部就不能访问直接访问__var属性了 并且自动创建另一个装饰器@my_var.setter,用于设置该属性值,即set方法 @property def my_var(self): return self.__var set方法这里要注意函数名需要与get方法一致 @my_var.setter my_var(self,value): self. value 实例化,定义一个私有属性 myclass = MyClass() 访问私有属性,自动调用get方法,即@property修饰的函数my_var (myclass.my_var) 设置私有属性,自动调用set方法,即my_var.setter修饰的函数my_var myclass.my_var = 33 (myclass.my_var) 以下可自行测试 # 私有属性不可访问,会报错 print(myclass.__var) 私有属性设置无效 myclass.__var = 44 print(myclass.my_var) 输出: 0 33 ? 注:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |