Python3基础18——类与对象

类与对象
class 命名规范:首字母大写 驼峰命名 见名知意。类的概念 :具有某一类共同属性和特性的事物,类一般包含 属性以及方法

 1 class Teacher:
 2     name="哒哒"
 3     age="23"
 4 
 5     def coding(self):  # 实例方法(self):意味着这个方法只能实例来调用
 6         print(self.name+"会敲代码")
 7 
 8     def cooking(self):#实例方法
 9         print(self.name+"会做蛋炒饭")
10 
11     @classmethod  # 类方法(cls):不可以调用类里面的属性值 如果你要参数 请自己传递参数
12     def swimming(cls):
13         print("老师还要会游泳")
14 
15     @staticmethod  # 静态方法(普通函数):不可以调用类里面的属性值 如果你要参数 请自己传递参数
16     def sing():
17         print("要会唱歌表演给学生看")
18 
19 t=Teacher()#实例  隐式的传递
20 t.cooking()               # 返回“哒哒会做蛋炒饭”
21 Teacher.coding(t)#显式的传递  不建议使用
22 Teacher.cooking() #没有实例化报错 missing 1 required positional argument: 'self',正确应该是Teacher().cooking()
23 #类方法:@classmethod
24 Teacher.swimming()     # 返回“老师还要会游泳”
25 t.swimming()           # 返回”老师还要会游泳“
26 #静态方法:@staticmethod
27 Teacher.sing()          # 返回“要会唱歌表演给学生看“
28 t.sing()                # 返回”要会唱歌表演给学生看”
类里面方法是分为三种,实例方法self 类方法cls 静态方法(普通方法)
实例和类名都可以直接调用;不同点: 静态方法和类方法 不可以调用类里面的属性值,如果你要参数请自己传递参数。什么时候去定义为静态和类方法?当你的某个函数与其他的类函数 类属性 没有半毛钱关系就可以定义为静态方法和类方法
 1 class Teacher:
 2     def __init__(self, age=23):  # __init__初始化函数没有return 返回值,实例方法一般不传动态参数和关键字参数,
 3         self.age = age
 4         self.height = 180
 5 
 6     def cooking(self):
 7         print("%s岁的老师还要会做饭" % self.age)
 8 
 9     @classmethod  # 类方法
10     def swimming(cls):  
11         print("老师还要会游泳")
12 
13     @staticmethod
14     def sing(name):  # 普通函数
15         print("要会唱{0}歌".format(name))
16 
17 Teacher(40).cooking()   # “40岁的老师还要会做饭”
18 Teacher().swimming()    # ”老师还要会游泳“
19 Teacher().sing("好听的") # ”要会唱好听的歌“

猜你喜欢

转载自www.cnblogs.com/monica711/p/9857733.html