类:
参考文档:jianshu.com/p/202a289fb2d9
Python3 中类的静态方法、普通方法、类方法
静态方法: 用 @staticmethod 装饰的不带 self 参数的方法叫做静态方法,类的静态方法可以没有参数,可以直接使用类名调用。
普通方法: 默认有个self参数,且只能被对象调用。
类方法: 默认有个 cls 参数,可以被类和对象调用,需要加上 @classmethod 装饰器
class Classname:
@staticmethod
def fun():
print('静态方法')
@classmethod
def a(cls):
print('类方法')
# 普通方法
def b(self):
print('普通方法')
Classname.fun()
Classname.a()
Classname().b()
C = Classname()
C.fun()
C.a()
C.b()
class Dog():
# 初始化包含 类的属性
"""
__init()__:每当类Dog 创建新实例 python都会自动运行他
"""
def __init__(self,name,age):
self.name = name
self.age = age
# 行为 坐
def sit(self):
print(self.name.title() + "is now sitting.")
# 行为 打滚
def roll_over(self):
print(self.name.title() + "rolled over !")
my_dog = Dog("小花",2) # 在类中传入初始化的参数
# 访问属性
print("my dog name is "+ my_dog.name.title()+".") # 只用了初始化参数
print("my dog is "+ str(my_dog.age)+ " years old .")
# 调用方法
my_dog.sit() # 调用类里面的方法
my_dog.roll_over()
# * 使用类和实例
class Car():
def __init__(self,make,model,year):
self.make = make
self.model = model
self.year = year
def get_desc_name(self):
long_time = str(self.year) + " " + self.make +" " + self.model # 调用初始化方法的 参数
return long_time
my_car = Car("audi","a4",2016) # 类里面可以直接传 初始化的实参
print(my_car.get_desc_name())
# 统计创建的对象数:
class Tool(object):
# 使用赋值语句,定义类属性,记录创建工具对象的总数
count = 0
def __init__(self, name):
self.name = name
# 针对类属性做一个计数+1
Tool.count += 1
# 创建工具对象
tool1 = Tool("斧头")
tool2 = Tool("榔头")
tool3 = Tool("铁锹")
# 知道使用 Tool 类到底创建了多少个对象?
print("现在创建了 %d 个工具" % Tool.count)
"""
继承:
编写的类是 另一个现成类的特使版本 --可使用继承
子类自动继承了父类的 所有属性和方法,同时还可以自己定义自己的属性和方法
参考文档:https://www.cnblogs.com/feeland/p/4419121.html
"""
案例:
class Person(object):
def __init__(self,name,sex):
self.name = name
self.sex = sex
def print_title(self):
if self.sex == "male":
print("man")
elif self.sex == "female":
print("woman")
class Child(Person): # Child 继承 Person
pass
May = Child("May","female")
Peter = Person("Peter","male")
print(May.name,May.sex,Peter.name,Peter.sex) # 子类继承父类方法及属性
May.print_title()
Peter.print_title()