python 类 class
一、类的定义与实例化对象
# 例如
class Cat:
"""这是一个猫类"""
# class为关键字
# Cat为类名,使用大驼峰命名法
# """这是一个猫类""",解释类的用途
a = Cat() # 类的实例化对象
二、类的属性
1、实例属性
# 例如
# "__init__"初始化方法,在类实例化后自动调用,完成实例初始化
class Cat:
"""这是一个猫类"""
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
print("{}今年{}岁".format(self.name, self.age))
# 实例属性内部调用:self.属性名
lulu = Cat("lulu", 2) # 实例化对象
# 运行结果为:lulu今年2岁
print(lulu.age) # 外部调用实例属性:实例名.属性名
# 运行结果为:2
2、类属性
# 例如
# "__init__"初始化方法,在类实例化后自动调用,完成实例初始化
class Cat:
"""这是一个猫类"""
count = 0 # 类属性
def __init__(self, name, age):
self.name = name # 实例属性
self.age = age
Cat.count += 1
print("{}今年{}岁".format(self.name, self.age))
# 实例属性内部调用:self.属性名
print("实例了{}只猫".format(Cat.count))
# 类属性内部调用:类名.属性名
lulu = Cat("lulu", 2) # 实例化对象
nana = Cat("nana", 1)
lili = Cat("lili", 0.5)
print("实例个数:{}".format(Cat.count))
# 类属性外部调用:类名.属性名
运行结果为
3、私有属性
# 例如
# "__init__"初始化方法,在类实例化后自动调用,完成实例初始化
class Cat:
"""这是一个猫类"""
count = 0 # 类属性
def __init__(self, name, age, color):
self.name = name # 实例属性
self._age = age # 私有属性,外部可访问、可更改
self.__color = color # 私有属性,外部不可访问、不可更改
Cat.count += 1
print("{}今年{}岁".format(self.name, self._age))
# 实例属性内部调用:self.属性名
print("{}的颜色为:{}".format(self.name, self.__color))
print("实例了{}只猫".format(Cat.count))
# 类属性内部调用:类名.属性名
lulu = Cat("lulu", 2, "white") # 实例化对象
print("="*30)
nana = Cat("nana", 1, "black")
print("="*30)
lili = Cat("lili", 0.5, "gray")
print("="*30)
print("实例个数:{}".format(Cat.count))
# 类属性外部调用:类名.属性名
print("{}的年龄为{}".format(lulu.name, lulu._age))
# 外部访问单下划线私有属性
运行结果为
4、总结
1、实例可以访问实例属性,也可以访问类属性
2、类只能访问类属性
3、以单下划线开头的私有属性:只是为了告诉别人,这是私有属性,外部可访问、可更改。
4、以双下划线开头的私有属性:外部不可访问、不可更改。
三、类方法
# 例如
# "__init__"初始化方法,在类实例化后自动调用,完成实例初始化
class Cat:
"""这是一个猫类"""
count = 0 # 类属性
def __init__(self, name, age, color):
self.name = name # 实例属性
self._age = age # 私有属性,外部可访问、可更改
self.__color = color # 私有属性,外部不可访问、不可更改
Cat.count += 1
def print_cat(self):
print("{}今年{}岁".format(self.name, self._age))
# 实例属性内部调用:self.属性名
print("{}的颜色为:{}".format(self.name, self.__color))
print("实例了{}只猫".format(Cat.count))
# 类属性内部调用:类名.属性名
def __get_none(self):
# 私有方法不可被类和实例直接调用
return "我是私有方法"
def test(self):
get_siyou = self.__get_none()
return get_siyou
lulu = Cat("lulu", 2, "white") # 实例化对象
nana = Cat("nana", 1, "black")
lili = Cat("lili", 0.5, "gray")
print("实例个数:{}".format(Cat.count))
# 类属性外部调用:类名.属性名
lulu.print_cat() # 调用类方法:实例名.方法名()
a = lulu.test() # 间接调用类内部私有方法
print(a)
运行结果为