python class基础回顾
python class基础回顾
浮川的小窝

python class基础回顾

浮川先生
2024-11-08 发布 / 正在检测是否收录...

58d195fb49d72fe048108aa5fdf62405dc1fc359.jpg


class Test(object):
  '''类属性'''
  count = 0
  def __init__(self,prefix):
    self._prefix = prefix
    Test.count += 1
  '''直接通过类名来调用的方法叫做类方法也叫静态方法 ,不需要先创建实例,可以定义成这个类的静态属性,通过关键字@staticmethod来标记。'''
  @staticmethod
  def version():
    return "1.0"
  '''使用 @property 可以为类定义一个只读属性。这种属性只会有一个 getter 方法,而没有 setter 方法,从而禁止修改该属性的值。'''
  @classmethod
  def getSubClass(cls, prefix):
    return cls(prefix)
  '''获取类属性 基数当前一共生成了多少个子类'''
  @classmethod
  def getCount(cls):
    return cls.count
  @property
  def prefix(self):
    return self._prefix 
  '''可以通过 @property 和 @<property_name>.setter 组合来定义可读写属性。在 setter 中可以加入条件检查或其他逻辑,确保属性符合要求'''
  @prefix.setter
  def prefix(self, value):
    self._prefix = value
  '''@property 可以将一个方法定义为计算属性,通过一定的逻辑计算返回一个值,而不需要存储该值。'''
  def console(self, content):
    print(f"{self._prefix} : {content}")

test = Test('Hello World 1')
test.console(2)
test.prefix = 'Hello World 3'
print('哈哈哈',test.prefix)
test.console(4)
print(Test.version())

# 使用静态方法直接获取一个新的子类
test2 = Test.getSubClass('我是一个Test子类')
test2.console('Hello World 5')
print(Test.getCount())

class Test_Sub(Test):
  def __init__(self, prefix):
    super().__init__(prefix)
  def sub_function(self):
    return f"{self._prefix}: sub function"

test_sub = Test_Sub.getSubClass('我是一个继承Test的Test_Sub子类')
print('哈哈哈',test_sub.prefix)
print(Test_Sub.getCount())


'''
Hello World 1 : 2
Hello World 3 : 4
1.0
我是一个Test子类 : Hello World 5
2
我是一个继承Test的Test_Sub子类
3
'''
# 此处并没有打印 print(test_sub.prefix) Test_Sub不是继承自Test 那么test_sub实例应该有prefix?
'''
解释:
Test_Sub 的构造函数(__init__)缺失
修改:
class Test_Sub(Test):
    def __init__(self, prefix):
        super().__init__(prefix)  # 调用父类的构造函数,初始化 prefix
    def sub_function(self):
        return f"{self._prefix}: sub function"
'''
© 版权声明
THE END
喜欢就支持一下吧
点赞 0 分享 收藏

评论 (0)

取消