m面向对象
类
继承:多继承
对象
创建对象和调用函数一样。
方法:
#实例方法:只能通过实例调用,实例方法第一个定义的参数只能是实例本身的引用。
class Myclass :
def foo(self) :
print(id(self))
@classmethod
def foo1(cls):
print(cls)
@staticmethod
def foo2():
print(“hhh”)
a=Myclass()#创建实例方法
b=Myclass()#有创建一心的实例
c=Myclass()
print(id(a))
a.foo()
b.foo()
c.foo()
Myclass.foo()只是错误的,不可以被调用,不可以实例化.
print(id(Myclass))
Myclass.foo1()
Myclass.foo2()
#类方法:定义类方法要使用装饰器@classmethod,定义的第一一个参数只能对象的引用,可以通过类或实例直接调用
#静态方法:定义静态方法要是用@staticmethod,没有默认的参数必须的参数,
类方法
对象方法
够造方法
静态方法
类的定义与创建
class Person():
#name=”zs”#成员变量
#name=None
myname=None
def __init__(self,__myname__): # 构造方法
self.__myname__=__myname__
def show(self,s,b): #等同于java中的this show(this){}
print(self.__myname__,s,b)
P=Person(“jjjj”)
__myname=”lisi”
P.show(“hh”,”hh”)
print(P.name)
封装
class TestClassMethod(object):
METHOD = 'method hoho'
def __init__(self):
self.name = 'leon'
def test1(self):
print ('test1')
print (self)
@classmethod
def test2(cls):
print (cls)
print ('test2')
print (TestClassMethod.METHOD)
print ('----------------')
@staticmethod
def test3():
print (TestClassMethod.METHOD)
print ('test3')
if name == ‘main‘:
a = TestClassMethod()
a.test1()
a.test2()
a.test3()
TestClassMethod.test3()