#类与对象
#python类的语法 关键字 class
#class 类名 类名的规范是:数字字母下划线组成,不能以数字开头 首字母大写 驼峰命名
#类属性 放在类里面的变量值
#类方法 放在类里面的函数
#类方法里有:实例方法、类方法(classmethod)
class BoyFriend:
height = 175
weight = 140
def __init__(self,name,age): #初始化函数,初始化函数可以有默认值,一般不穿动态参数和关键字参数
self.name=name
self.age=age
pass
def cooking(self): #self 传递的是实例本身
print("会做饭")
def earn(self):
print("会赚钱")
@classmethod #类方法
def swimming(cls):
print("我是个类方法!")
@staticmethod #静态方法
def sing():
print("会唱歌,我是个静态方法")
#实例、对象 具体的一个例子 类名() 怎么去创建一个实例??类名+()
bf = BoyFriend()
print(bf)
#实例具有类里面的所有属性和方法的使用权限
#调用属性 实例.属性值
#调用方法 实例.方法名()
#实例方法,意味着 这个方法只能实例来调用
t = BoyFriend() #实例 隐式的传递,创建实例的调用
t.cooking()
BoyFriend.earn(t) #显示的传递
#类方法,创不创建实例都可以调用类方法 @classmethod
BoyFriend.swimming() #方法一:直接类调用
t = BoyFriend() #方法二 创建实例调用
t.swimming()
#静态方法 @staticmethod 参数非必传,普通函数
#实例和类都可以调用
BoyFriend.sing()
t = BoyFriend()
t.sing()
#初始化函数,什么时候用呢?想用就用,如果某个属性值是多个函数公用的,就可以用初始化函数。
#没有返回值 return
t1 = BoyFriend('wuzm','13')
t2 = BoyFriend('lyn','23')
#1、实例方法self 类方法cls 静态方法(普通方法) 实例和类名都可以直接调用
#2、不同点:静态方法和类方法不可以调用类里面的属性值,如果你要参数,请自己传递参数
#3、什么时候去定义为静态和类方法,当你的某个函数和其他的类函数、类属性没有任何关系的时候,就可以定义为静态方法和类方法。