python类相关知识
class Person(object):
cls_data="xiaohei"#类属性
def __init__(self, name, age):#初始化方法
self.name = name#实例化(对象)属性,self代表当前对象
self.age = age
@classmethod
def get_cls_data(cls):#类方法
print(cls.cls_data) #cls代表着类本身(Person)
def get_name(self):#实例化方法
print(self.name,self.age)
@staticmethod
def get_age(age):#静态方法,与类和对象无关
print(age)
@property
def get_name_age(self):#属性方法,将方法转换为属性
print(self.name,self.age)
return self.name,self.age
class Student(Person):#继承
def __init__(self, name, age, score):
super().__init__(name, age)
# self.score = score
self.__score = score#私有属性
def __private_method():
print('这是私有方法')
def get_name(self):
print(self.name,self.__score)
p1=Person('张三', 20)
print(p1.name)
print(Person.cls_data)
Person.get_cls_data()
Person.get_age(20)
p1.get_age(20)
a,_=p1.get_name_age
p2=Student('李四', 20, 100)
p2.get_name()
p2.get_name_age
class Singleton:
_instance = None
#__new__ 是一个静态方法(尽管不需要显式使用 @staticmethod 装饰器),它负责创建对象实例。它是对象实例化过程中第一个被调用的方法。
def __new__(cls, *args, **kwargs):
if cls._instance is None:
cls._instance = super().__new__(cls)
return cls._instance
def __init__(self, value):
self.value = value
# 测试单例模式
a = Singleton(10)
b = Singleton(20)
print(a is b) # 输出: True
print(a.value) # 输出: 20
print(b.value) # 输出: 20