成员

成员分为三大类:变量 / 方法 / 属性

1.变量: 分为实例变量与类变量

  实例变量(字段):在__init__方法进行定义的

  类变量(静态字段): 直接在类里面定义的,一般应用在当所有对象中的有共同的字段,且要改都改,要删都删的时候

class foo(object):

    addres = "世界之窗"   # 类变量

    def __init__(self,name,age):
        self.name = name    # 实例变量
        self.age = age

2.方法:实例方法 / 静态方法 / 类方法

  静态方法:定义时需要在方法上面加@staticmethod,可不传值

  类方法:定义时需要在方法上面加@classmethod,至少要传一个参数cls,一般应用在代码中需要用到当前类的时候

class foo:
    def __init__(self,name):
        self.name=name

    def f1(self):  # 实例方法   self 是对象
        print(self.name)

    # 静态方法,如果方法无需使用对象中封装的值,那么就可以使用静态方法
    @staticmethod
    def f2():
        print(6666)



    # 类方法
    @classmethod
    def f3(cls,x1,x2):     # 类方法里至少要传一个值cls
        print(cls,x1,x2)  # cls 打印的是当前类的名字

obj = foo('123')   
obj.f1()      # 实例方法需要先进行实例化对象再用,对象进行调用
<<<123
foo.f2()  # 静态方法可以直接使用类名进行调用也可以用实例化对象进行调用
<<<6666
foo.f3(12,45)  # 类方法可以直接使用类名进行调用也可以用实例化对象进行调用
<<<  
<class '__main__.foo'> 12 45

3.属性(通过方法改造出来的):

定义时需要在方法上面加@property,调用时无需加括号直接对象.方法进行调用,一般应用在无需传参时且有返回值时可以使用

class foo:
    def __init__(self):
        pass

    def f1(self):  
        print(self)

     # 属性,写属性的时候不能加参数,只能是self
    @property
    def f2(self):
        return 10
obj = foo()
print(obj.f2)
<<<10

4.私有与公有:变量、方法和属性都有私有与公有

  1.私有:只能内部访问不能外部直接访问,如果外部要访问要借助里面的进行访问

  2.公有:外面与内部都可以访问

class foo(object):
    __city="北京"   # 私有类变量
    
    
    def __init__(self,name):   # 私有实例变量
        self.__name = name
        
        
    def __display1(self):   # 私有实例方法
        pass

    @staticmethod
    def __display2():   # 私有静态方法
        pass

    @classmethod
    def __display3(cls):   # 私有类变量
        pass

    @property
    def __display4(self):   # 私有属性
        return 10

 

posted @ 2019-08-22 16:36  tiwe  阅读(235)  评论(0编辑  收藏  举报