Python类 基础知识
'''圆形类demo 类属性、实例属性、私有属性/方法 实例/类/静态方法 property装饰器'''
year = 2020
class Circle(object):
pi = 3.14
__space = 'Euclid'
instance_num = 0
def __init__(self,r):
self.r = r
self.__name = 'circle' + str(r)
Circle.instance_num += 1
def get_area(self):
return self.r**2*Circle.pi
def get_space(self):
return Circle.__space
def __get_name(self):
return self.__name
def get_circle_name(self):
return self.__get_name()
@classmethod
def get_instance_num(cls):
return cls.instance_num
@staticmethod
def check_year():
return year == 2020
def print_year_info(self):
if self.check_year():
print('This year is 2020!')
else:
print('This year is not 2020!')
@property
def name(self):
return self.__name
@name.setter
def name(self,s):
self.__name = s
c1 = Circle(2)
c2 = Circle(3)
print(c1.r, c2.r, c1.pi, Circle.pi)
c1.pi = 3.1415
print(c1.pi, c2.pi, Circle.pi)
del c1.pi
print(c1.pi,c2.pi,Circle.pi)
print('c1的面积为:',c1.get_area())
print(c1.get_space())
print(Circle._Circle__space)
print(c1.get_circle_name())
print(c1._Circle__get_name(), c1._Circle__name)
print(Circle.get_instance_num(),Circle(4).get_instance_num())
print(Circle.check_year(), c1.check_year())
c2.print_year_info()
print(c1.name)
c1.name = 'new name'
print(c1.name)
继承和派生
class Animal(object):
def __init__(self,name,age):
self.name = name
self.age = age
def call(self):
print(self.name + 'can call')
class Cat(Animal):
def __init__(self,name,age,sex):
super().__init__(name, age)
self.sex = sex
def call(self):
print(self.name + 'can call "miao miao"')
class Tree(object):
def __init(self):
pass
def call(self):
print("I'm a tree")
def do_calling(obj):
obj.call()
animal = Animal('animal',5)
cat1 = Cat('cat1', 2, 'male')
print(cat1.name, cat1.age, cat1.sex)
cat1.call()
tree = Tree()
for i in [animal,cat1,tree]:
do_calling(i)