四种函数
Java中并没有类函数。我也不大明白类函数的作用。
私有函数 | 公有函数 | 静态函数 | 类函数 |
---|---|---|---|
属于对象 | 属于对象 | 属于类 | 属于类 |
方法名以两个下划线开头“__” | —— | 使用 @staticmethod | 使用 @classmethod |
可以访问类、对象成员 | 可以访问类、对象成员 | 不能直接访问属于对象的成员,只能访问属于类成员。 | 不能直接访问属于对象的成员,只能访问属于类的成员。 |
不能通过 object. 调用,只能通过 object._className__funcName 来访问 | 可以通过 object. 调用 | 可以通过 object. 调用 | 可以通过 object. 调用 |
—— | 如果用 class.调用,需要显示的为该方法的 self 参数传递一个对象名,用来明确指定访问哪个对象的数据成员。 | 可以通过 class. 调用 | 可以通过 class. 调用 |
—— | —— | 可以不写参数(平常的必须写 self 或者 cls) | 一般将 cls作为类方法的第一个参数,如同 self,在调用类方法时不用为 cls 传值 |
class Car:
factory = 'bwm'
def __init__(self, name, price, speed):
self.__name = name
self.price = price
self.speed = speed
def __can(self):
print('this is a private method')
def say(self):
print('hi~ i am {}'.format(self.name))
@classmethod
def sale(cls):
# AttributeError: type object 'Car' has no attribute 'price'
print('i sale for {}$'.format(cls.price)) # 虽然cls能点出price来,但运行时会报错
@staticmethod
def run():
pass
c1 = Car('lala', 10000, 66)
c1.sale()
Car.sale()