day16 类的成员


成员 类中写的内容就是成员
变量
1. 实例变量(成员变量, 字段). 对象.xxx = xxx 实例变量 -> 字段 -> 属性. 给对象用的

2. 类变量. 直接写在类中的变量就是类变量. 类变量一般用类名来访问. 对象中共性的属性提取出来.即所有该类的对象共享的的变量
class Person:
    country = "中国"      # 类变量
    def __init__(self,name, age):
        self.name = name
        self.age = age

# Person.country = "大清" 
# print(Person.country) # 直接使用类名进行访问
p1 = Person("alex", 185)
p1.country = "大清" # 添加了一个实例变量
print(p1.name)
print(p1.country)

p2 = Person("wusir", 145)
print(p2.name)
print(p2.country)

# 类变量的修改只能通过类名来完成
View Code
        
     方法
1. 实例方法(成员方法). 对象直接访问的方法 对象.方法()
class Computer:
# 实例⽅法(成员⽅法)
    def play(self):
    print("我的电脑可以玩⼉")
c = Computer()
c.play() # 对象直接去调⽤实例⽅法
View Code
            2. 类方法. 需要在参数列表的第一位置预留位置, 参数起名cls,被调用时也不需要传递实例对象  添加@classmethod   类名.方法()
class Computer:
    def play(self):
        print("我的电脑可以玩⼉")
    @staticmethod
    def fare():
        print("我的电脑⾮常⽜B, 可以煎鸡蛋")
    @classmethod
    def cal(cls, a, b):
        print(cls)
        return a+b
print(Computer.cal(1, 2)) # 此时会⾃动的把类名传递给类⽅法的第⼀个参数
View Code

3. 静态方法. 不需要给方法传递self, 即出现一个方法不需要是使用成员变量的时候,选择静态方法 添加@staticmethod 类名.方法()
@staticmethod
    def fare():
    print("我的电脑⾮常⽜B, 可以煎鸡蛋")
Computer.fare() # 类名可以直接访问的
c.fare() # 对象也可以访问. 但最好不要这么⼲. 以便于区分静态⽅法和实例⽅法
View Code
        属性  @property
把方法转化成属性.
对象.属性
    注意事项: 1.方法参数只能有一个self
         2.调用时不需要括号, 当属性变量使用
         3. 需要有返回值
         4. 不能赋值
class User:
    def __init__(self, name, birthday, qq, email):
        self.name = name
        self.birthday = birthday
        self.qq = qq
        self.email = email

    # 方法
    @property # 可以把一个方法变成一个属性
    def age(self):
        return 2018 - self.birthday
    '''
        @property
        1. 函数只能有一个self参数. 
        2. 需要有返回值
        3. 不能赋值
        4. 调⽤的时候, 我们不需要写括号. 直接当成属性变量来⽤就可以了
        
    '''
u = User("王明", 1994, 1024663304, "[email protected]")
print(u.age)
u.qq = 10010
u.age = 18
View Code

  私有 (在python中,一般不提倡设置和使用私有信息)
__作为前缀
在自己类中可以随意访问. 但是出了类任何人都不可以访问这个私有内容
     但是通过公共方法可以访问
访问私有变量
访问私有方法
访问私有方法
class Person:
    def __init__(self):
        pass
    def __yue(self):
        print("我要约会")
    def job(self):
        print("我要⼯作")
        self.__yue() # 在⾃⼰类中访问⾃⼰的其他⽅法. 哪怕是私有的. 也是⾃⼰在⽤
p = Person()
p.job()

猜你喜欢

转载自www.cnblogs.com/Knight-huang/p/9923744.html