当前位置:首页>>python类

python类

  • 2022-07-15 17:06:53

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)

上一篇:python类
下一篇:java重新开始

猜你喜欢