# 声明一个类:
class Demo(object):
当类没有指定继承时,均继承自超类object,所以当继承自object时,通常省略(object)部分,写作:
class Demo:
# 类属性:
在类体中,方法之外定义的变量称之为类属性;
class Demo:
weather = "sunny" # weather 即为类属性
访问类属性时,通过类名.类属性的方法来访问;
class Demo:
weather = "sunny"
print(Demo.weather)
# 构造方法(__init__):
每个类都有其构造方法,当调用该类时,会自动执行其构造方法;当开发者不定义__init__方法时,会自动给类添加该方法 ;
class People(object):
# 定义构造方法
def __init__(self, year, price):
self.year = year
self.price = price
# 实例方法:
方法和函数的区别:函数实现的是某个独立的功能,而实例方法实现的是类中的一个行为,属于类的一个部分多用于定义该类对象的行为和实现;
语法:def 方法名(self, 参数列表) self最大作用是引用当前方法的调用者,也可以在一个实例方法中访问实例的其他变量、属性和其他方法
class Weathers(object):
def demo_case(self, weather): # 实例方法demo_case
print(f"我讨厌{weather}")
# 类方法:
作用:可以操作类的详细信息
语法:方法前必须要用 @classmethod 装饰器来声明
访问:类名.类方法名(参数列表)
class Person(object):
# 类属性
head = 1
# 类方法
@classmethod
def body(cls):
cls.head += 1
# 通过类名访问类方法
Person.body()
print(Person.head) # 2
# 静态方法
语法:方法前必须要用 @staticmethod 装饰器来声明
静态方法不能访问类的数据,没有cls、self关键字,不能设置类、实例的状态
常用于创建通用的工具类函数,这样就可以把常用函数放在一个类中,进行统一的管理,使用时不需要实例化对象,就可以便捷的调用
class Watch(object):
# 定义静态方法
@staticmethod
def stand_here():
print("这是静态方法")
# 通过类名访问静态方法
Watch.stand_here()
类方法和静态方法可以直接通过类名调用,省去实例化步骤