class A:
def prt(self):
print("A")
class B:
def prt(self):
print("B")
class C:
pass
def test(arg):
arg.prt()
a=A()
b=B()
c=C()
test(a)
test(b)
test(c)
A,B可以打印出来,而C会报错。test方法接受的数据类型明眼人规定,它只负责接受一个参数然后调用prt方法
二.面向对象的各种方法
1.静态方法
通过@staticmethod装饰器来表示,该方法可以把@staticmethod下面的函数和所属的类截断,这个函数就不属于这个类,也没有类的属性,只不过要通过类名的方式调用
@staticmethod静态方法将sing方法和类截断了,如果我们通过sing(self)去调用singer的self.name会报错
2.类方法
用@classmecthod装饰符来表示,类方法只能访问类变量,不能访问实例变量
class singer(object):
name = "张学友"
#类方法sing不能访问实例变量,下面的“郭富城”无效
#类方法只能访问在类里定义的变量
def __init__(self, name):
self.name = name
@cla