面向对象编程
类
多继承
类中所有的__开头的方法都是内置的方法,来自于继承的父类,不能被外部调用
定义类的语法
class类名(父类….)
对象
创建对象和调用函数一样
方法
类方法:定义类方法要使用装饰器@classmethod,定义的第一个参数只能是类对象的引用,可以通过类或者实例直接调用
实例方法: 只能通过实例调用,实例方法第一个参数只能实例本身的引用
类方法: 定义类方法要使用装饰器@classmethod,定义的第一个参数只能只能是类对象的引用,可以通过类或者实例直接调用
静态方法: 定义静态方法要使用装饰器@staticmethod,没有默认必须参数,可以通过类或者实例直接调用
class person():
#name ="zhangsan" #字段,等同于java成员变量
#name = None
#__开头的方法和变量是受保护的,外部不可调用
def __myshow(self):
print("!!")
def __init__(self,name=None):
self.name = name
self.__myshow()
def show(self,s): #this
print(self.name,s)
p = person("ls")
p.show("sssss")
p.name="zs"
print(p.name)
创建实例
class Myclass:
def foo(self):
print(id(self))
@classmethod
def foo2(cls):
print(id(cls))
@staticmethod
def foo3():
print("foo3")
a = Myclass() #创建实例
b = Myclass()
print(id(a))
a.foo()
b.foo()
print(id(Myclass))
Myclass.foo2()
a.foo2()
其中foo()是实例方法
foo2()是类方法
foo3()是静态方法