encoding:utf-8
class Person():
count = 0
# 定义一个构造函数,python 中每个类的构造函数都是init
def init(self):
self.age = 10
self.name = ''
#定义实例方法(相当于c++中的成员函数)
def getName(self):
return self.name
# 类方法(相当于c++中的静态成员函数)
@classmethod
def getCount(cls):
return cls.count
# 静态方法
@staticmethod
def makePerson():
obj = Person()
obj.name = 's111'
obj.age =123456
return obj
def _fun(self):
print('_fun')
def fun2(self):
print('fun2')
定义一个Person的派生类
class Student( Person ):
def init(self):
# 在子类中调用父类的成员
# 3.X版本
super(Student,self).init()
# 2.X 版本
# Person.__init__(self)
def fun2(self):
# super(Pe,self).fun2()
Person.fun2(self)
stuObj = Student()
stuObj.fun2()
print(stuObj.dict)
使用类构造一个对象
obj = Person()
print(obj.age)
在本模块中可以访问
obj._fun()
打印类的字典(保存是类中成员)
print(Person.dict)
print(obj.dict)
python的中对象的属性可以动态增加
obj.name = '如花'
print(obj.dict)
obj2 = Person()
print(obj2.dict)
判断一个对象是否存在指定属性
if hasattr(obj2,'name') == True:
print('存在name属性')
python中的多继承, 菱形继承被字典的特性解决了,
因此Python中多继承的处理方式虽然粗暴,但也不会造成大的问题
class A():
def init(self):
self.aa = 1
class BA(A):
def init(self):
A.init(self)
self.baba=2
class BC(A):
def init(self):
A.init(self)
self.bcbc=3
class C(BA,BC):
def init(self):
BA.init(self)
BC.init(self)
self.cc = 4
print('-'*40)
cObj = C()
print(cObj.dict)
网友评论