目录
print("--------继承----------")
class Animal:
def __init__(self,name):
self.name = name
def play(self):
print("你是",self.name)
class Dog(Animal):
pass
dog = Dog("旺财")
dog.play()
print("--------多态----------")
class Animal:
def say(self):
print(self.__class__.__name__) # 获取类名
class Dog(Animal):
def say(self):
print("Dog")
class Cat(Animal):
def say(self):
print("Cat")
dog = Dog()
dog.say()
cat=Cat()
cat.say()
print("--------类的定义与使用----------")
class AddBook(object):
def __init__(self,name,phone): #父类
self.name = name
self.phone = phone #定义构造函数,接受name和phone两个参数,并存储为实例变量self.name和self.phone
def get_phone(self):
return self.phone #定义方法返回电话号码
class EmplEmail(AddBook):
def __init__(self, nm, ph, email):
super(EmplEmail, self).__init__(nm,ph) #调用父类的构造函数初始化name和phone
#AddBook.__init__(self, nm, ph)
self.email = email
def get_email(self):
return self.email #定义方法返回邮箱
if __name__ == "__main__": #只有在直接运行这个文件时才会执行
Detian = AddBook('handetian','18210413001')
Meng = AddBook('shaomeng','18210413002')
print('Detian.get_phone()')
print('AddBook.get_phone(Meng)')
alice = EmplEmail('alice','18210418888','alice@xkops.com')
print(alice.get_email(),alice.get_phone())
#创建__init__()方法
class People:
def __init__(self,name,sex,age):
self.name = name
self.sex = sex
self.age = age
print('--------属性----------')
#使用@property装饰器操作类属性
'''
class Demo:
@property
def methodname(self):
block
'''
class Animal(object):
def __init__(self, name, age):
self._name = name
self._age = age
self._color = 'Black'
@property
def name(self):
return self._name
@name.setter
def name(self, value):
if isinstance(value,str):
self._name = value
else:
self._name = 'No name'
@property
def age(self):
return self._age
@age.setter #@<attribute>.setter 装饰器允许你在设置属性值时执行一些逻辑,如验证或转换值。
def age(self,value):
if value > 0 and value < 100:
self._age = value
else:
self._age = 0
@property
def color(self):
return self._color #@property 装饰器允许你将一个方法定义为类的一个属性,这样就可以像访问普通属性一样访问这个方法,而不需要显式地调用它(即不需要加上括号)。
@color.setter
def color(self,value):
self._color = value
a = Animal('black dog', 3)
a.name = 'white dog'
a.age = 300
print('Name:', a.name)
print('Age:', a.age)
#使用类或实例直接操作类属性
class Employee(object):
empCount = 0
def __init__(self, name, salary):
self.name = name
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print("total employee",Employee.empCount)
def displayEmployee(self):
print("name:",self.name,",salary:",self.salary)
emp1 = Employee("丽丽",10000)
emp1.displayCount()
emp1.displayEmployee()
emp1.salary = 20000
print(emp1.salary)
emp1.age = 25
print(emp1.age)
del emp1.age
#使用Python内置函数操作属性
print("--------------")
class Employee(object):
empCount = 0
def __init__(self,name,age,salary):
self.name = name
self.age = age
self.salary = salary
Employee.empCount += 1
def displayCount(self):
print("total employee",Employee.empCount)
def displayEmployee(self):
print("name:",self.name,"age:",self.age,"salary:",self.salary)
emp1 = Employee("Rose",27,20000)
if hasattr(emp1,'name'):
name_value = getattr(emp1,'name')
print("name的属性值为:",name_value)
else:
print("员工属性不存在")
if hasattr(emp1,'tel'):
print("员工属性已存在")
else:
setattr(emp1,'tel','13911111111')
t1 = getattr(emp1,'tel')
print("tel的属性值为:",t1)
setattr(emp1,'tel','13211111111')
t2 = getattr(emp1,'tel')
print('tel修改后的属性值为:',t2)
if hasattr(emp1,'age'):
delattr(emp1,'age')
else:
print("员工age属性不存在")
if hasattr(emp1,'age'):
print("属性age存在!")
else:
print("属性age不存在!")
print("-------继承----------")
class Person(object):
def __init__(self, name, age):
self.name = name
self.age = age
self.weight = 'weight'
def talk(self):
print("person is talking......")
class Chinese(Person):
def __init__(self,name,age,language):
Person.__init__(self,name,age)
self.language = language
def walk(self):
print('is walking........')
class American(Person):
pass
c=Chinese('bigberg',22,'Chinese')
print(c.talk())
print(c.walk())
#方法重写
class Animal:
def run(self):
print("动物会跑~~~")
def sleep(self):
print("动物睡觉~~~")
class Dog(Animal):
def bark(self):
print("汪汪汪~~~")
def run(self):
print("狗跑~~~")
d = Dog()
d.run()