当前位置:   article > 正文

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

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

在这里插入图片描述

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

实例属性:定义在__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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

在这里插入图片描述

初始化实例属性__init__

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

class Teacher:
  
  def __init__(self, name, age, subject):
      self.name = name
      self.age = age
      self.subject = subject
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

私有属性

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

伪私有属性(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'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29

函数调用拓展

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/261965
推荐阅读
相关标签
  

闽ICP备14008679号