#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS