您的位置:威尼斯官方网站 > 威尼斯正规官网 >     公有实例变量(字段)

    公有实例变量(字段)

发布时间:2019-11-20 13:34编辑:威尼斯正规官网浏览(58)

    分子和嵌套(组合)

    成员

    1.类的成员:变量,方法,属性

    变量:

      实例变量(字段)

        公有实例变量(字段)

    1 class Foo:
    2     def __init__(self,name):
    3         self.name = name#公有实例变量
    4     
    5      def func(self):
    6         return self.name
    

     

        私有实例变量(字段)

    1 class Foo:
    2     def __init__(self):
    3         pass
    4     def __func(self):
    5         print("私有实例变量")
    6 
    7 obj = Foo()
    8 obj.func()#此处无法调用
    

     

      类变量(静态字段)

        公有类变量(静态字段)

     1 class Foo:
     2     a = 1#公有类变量
     3     def __init__(self):
     4         pass
     5     def func(self):
     6         return self.a
     7 
     8 obj = Foo()
     9 print(obj.a)
    10 print(Foo.a)
    

     

        私有类变量(静态字段)

    1 class Foo:
    2     __a = 1
    3     def __init__(self):
    4         pass
    5     def func(self):
    6         print(self.a)#不能引用,错
    7 
    8 obj = Foo()
    9 obj.func()
    

    总结:

      公有实例变量能够在类的办法中选用,也得以用实例化的目的调用

      私有实例变量不能够在对象调用,只好在类中用任何办法调用后,再使用对象调用

      公有类变量能够在类中调用,也能够用对象调用

      私有类变量只好在类中应用此外办法调用,无法运用对象调用,子类也无法调用(假使必定要用,先在父类中行使格局来调用那么些私有类变量,再在子类中调用那一个方式)

     

    方法:

      实例方法

      

    1 class Foo:
    2     def __init__(self,name):
    3         self.name = name
    4     def func(self):#实例方法
    5         print(self.name)
    6 
    7 obj = Foo("abc")
    8 obj.func()
    

     

      静态方法

    1 class Foo:
    2     def __init__(self,name)
    3         self.name = name
    4     @staticmethod#静态方法
    5     def display(a1,a2):
    6         return a1 + a2
    7 
    8 Foo.display(1,2)
    #如果无需使用对象中封装的值,就可以使用静态方法
    

     

      类方法

    1 class Foo:
    2     @classmethod
    3     def show(cls,x1,x2):#默认第一个参数是类(cls)
    4         print(cls,x1,x2)
    5 
    6 ret = Foo.show(1,2)
    7 print(ret)
    

    总结:

      实例方法:至稀有多少个参数,第二个参数必须是实例对象,暗中认可是self

      静态方法:能够没有参数,也没有需求接收对象中封装的值,方法方面须求加@staticmethod

      类方法:至稀有一个参数,首个参数必需是类,默许是cls,方法方面需求加@classmethod

     

    性格(通过艺术改造出来):

      

     1 class Foo:
     2     def __init__(self):
     3         pass
     4     @property
     5     def start(self):
     6         return 1
     7     @property
     8     def end(self):
     9         return 2
    10 
    11 obj = Foo()
    12 print(obj.start)
    13 print(obj.end)
    

    总计:属性编写时,方法方面写@property,方法中独有一个参数self

      调用时,无需加括号,直接是对象.方法

      对于简易的法子,当无需传参且有重回值时,可以应用品质

     

    嵌套(组合):

     1 class Student(object):
     2     def __init__(self,name,age)
     3         self.name = name
     4         self.age = age
     5 #创建三个人
     6 obj1= Student("a",18)
     7 obj2= Student("b",20)
     8 obj3= Student("c",21)
     9 
    10 class School(object):
    11     def __init__(self,name,address)
    12         self.name = name
    13         self.address = address
    14 
    15 #创建三个学校
    16 s1 = School("学校1","北京")
    17 s2 = School("学校2","上海")
    18 s3 = School("学校3","深圳")
    19 
    20 
    21 #给每个学生分配学校
    22 obj1.school = s1
    23 obj2.school = s2
    24 obj3.school = s3
    25 
    26 print(obj1.school.name)
    27 print(obj2.school.name)
    28 print(obj3.school.name)
    

     

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:    公有实例变量(字段)

    关键词: