#author("2023-10-10T10:00:22+08:00","default:Admin","Admin") #author("2023-10-10T10:25:34+08:00","default:Admin","Admin") [[Python]] &color(red){※This article is based on Python 3.7.3}; #contents * 基本的类 [#p043caee] #codeprettify{{ class Circle1(object): # 创建Circle类,Circle为类名 pass # 此处可添加属性和方法 class Circle2(object): # 创建Circle类 #定义基本属性 name = '' age = 0 #定义私有属性,私有属性在类外部无法直接进行访问 __weight = 0 #定义构造方法 def __init__(self, r): # 初始化一个属性r(不要忘记self参数,他是类下面所有方法必须的参数) self.r = r # 表示给我们将要创建的实例赋予属性r赋值 self.name = 'ddd' self.age = 2 }} #codeprettify{{ circle1 = Circle() circle2 = Circle(2) # 创建实例时直接给定实例属性,self不算在内 print(circle1.r) # 实例名.属性名 访问属性 print(circle2.r) # 我们调用实例属性的名称就统一了 }} ** 类属性 [#e0346f90] 绑定在实例上的属性不会影响其他实例,但类本身也是一个对象,如果在类上绑定属性,则所有实例都可以访问该类的属性,并且所有实例访问的类属性都是同一个!!! 记住,实例属性每个实例各自拥有,互相独立,而类属性有且只有一份。 圆周率π为圆的共有属性,我们可以在Circle类添加pi这个类属性,如下: #codeprettify{{ class Circle(object): pi = 3.14 # 类属性 def __init__(self, r): # 实例属性 self.r = r circle1 = Circle(1) circle2 = Circle(2) print('----未修改前-----') print('pi=\t', Circle.pi) print('circle1.pi=\t', circle1.pi) # 1 print('circle2.pi=\t', circle2.pi) # 2 print('----通过类名修改后-----') Circle.pi = 3.14159 # 通过类名修改类属性,所有实例的类属性被改变 print('pi=\t', Circle.pi) # 3.14159 print('circle1.pi=\t', circle1.pi) # 3.14159 print('circle2.pi=\t', circle2.pi) # 3.14159 print('----通过circle1实例名修改后-----') circle1.pi=3.14111 # 实际上这里是给circle1创建了一个与类属性同名的实例属性 print('pi=\t', Circle.pi) # 3.14159 print('circle1.pi=\t', circle1.pi) # 实例属性的访问优先级比类属性高,所以是3.14111 print('circle2.pi=\t', circle2.pi) # 3.14159 print('----删除circle1实例属性pi-----') }} 还可以删除类属性 del circle1.pi * 类的继承 [#o8fdb977] #codeprettify{{ class Person(object): #定义一个父类 def talk(self): #父类的方法 print("person is talking.....") class Chinese(Person): #定义一个子类,继承Person类 def walk(self): #在子类中定义其自身的方法 print("is working....") c = Chinese() c.talk() #调用继承的Person类的方法 c.walk() #调用本身的方法 # 输出 person is talking.... is walking... }} #hr(); コメント: #comment_kcaptcha