欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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重新开始