python--类和对象+类属性+实例属性+函数在类的调用

类属性–创建、访问(类、类实例)

类属性:定义在类里面,函数外面
访问:类.属性名称 实例.类属性名称`

class Dog:
    name='小黑'  # 类属性
    __dog_color = '白色' # 类私有属性

    def __init__(self):
        self.color = '黑色'  #实例属性
        self.__kind='中华田园犬' # 实例私有属性
        print('初始化方法自动调用了吗???')
        print(self)
    # 实例方法
    def eating(self):
        print(Dog.name,'正在吃骨头。。。')
        print('狗的颜色',self.color)
        self.sleep()
 if __name__ == '__main__':
    # 类实例化
    # Dog 类
    Dog().eating()
    a=Dog()   #类实例
    a.eating()
    #实例.类属性名称
    print(a.name)
    #类外面:类实例.名称
    print(a.color)

在这里插入图片描述

实例属性–创建、访问(类实例)

实例属性:定义在__init__(初始化方法,可有可无)中,self.xxxx
访问:实例属性名称
在类里面:self.xxxx
类外面:类实例.名称
实例属性需要实例化之后才能访问

class Teacher:
    
    age = 20
    
    def __init__(self, name, age, subject):
    # 实例化属性 name、age 和 subject
          self.name = name
          self.age = age
          self.subject = subject
          
t = Teacher('Dzreal', 25, 'PE')
print(t.age)    # 25
del t.age       # 删除实例属性后,自动调用类属性
print(t.age)    # 20

在这里插入图片描述

初始化实例属性__init__

init__是用来完善对象的,在对象生成之后调用
实例属性:定义在__init
(初始化方法,可有可无)中,self.xxxx

class Teacher:
  
  def __init__(self, name, age, subject):
      self.name = name
      self.age = age
      self.subject = subject

私有属性

并不是所有的属性都可以被外部访问,不能被外部访问的属性就叫私有属性

伪私有属性(Pseudo-private Attributes)

伪私有属性是通过给属性名添加单下划线 _前缀来实现的。
可以访问,但不要随意访问

私有属性(Private Attributes)

私有属性是通过给属性名添加双下划线 __ 前缀来实现的。
一般不可访问,强行访问的话,可以通过 实例._类名__attrname来访问

class Teacher:

    def __init__(self, name, age, subject):
        # 定义一个私有属性,名称为 _name
        self.__name = name
        # 定义一个公有属性,名称为 age
        self.age = age
        # 定义一个受保护的属性,名称为 _subject
        self._subject = subject

    def get_fake_private(self):
        # 打印受保护的属性
        print(self._subject)

    def get_private(self):
        # 打印私有属性
        print(self.__name)

# 实例化 Teacher 对象
t = Teacher('Dzreal', 25, 'PE')

# 通过实例方法访问私有属性
t.get_fake_private()  # PE
t.get_private()  # Dzreal

# 直接访问私有属性
print(t._subject)  # PE
print(t._Teacher__name) # Dzreal
print(t.__name)    # 报错 AttributeError: 'Teacher' object has no attribute '__name'

函数调用拓展

第一种:函数名称()
第二种:在类的内部,self.函数名称()
第三种:在类的外面,类实例.函数名称() == 类().函数名称()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值