#1、创建类及类变量
class person:
name = "zhangsan" #类变量
def say (self): #定义方法
print(f"hello{person.name}")
#访问类变量
print(person.name)
person.name ="lisi" #类名修改影响所有实例
#访问类中定义的方法,需要先实例化类
a = person() #a是实例化类
a.say()
a.name = "zhangsan" #修改
print(a.name)
b = person()
print(b.name)
#2、构造器
class person:
def __init__(self,name): #可以添加多参(self,name,age)
#构造器
self.username=name #实例变量 也可以写死self.age=20
self.age = 20
self.email = f"{name}@163.com"
def say(self):
print(f"hello{self.username},age:{self.age},{self.email}")
a = person("张三")
a.say()
b = person("李四")
b.say()
3、类变量实例变量的区别 self都指向实例
class emp :
up = 0.1
def __init__(self,name,salary):
self.username = name
self.salary = salary
def up_salary(self):
self.salary = self.salary * (1+self.up) #(1+emp.up)
emp.up = 0.2 #类变量,全局
a = emp("张三",10000)
a.up = 0.2 #类变量,单个
a.up_salary()
print("张三",a.salary)
b = emp("李四",8000)
b.up_salary()
print("李四",b.salary)
#4、类的继承性 更多属性
class animal:
def __init__(self,name,legs):
self.name = name
self.legs =legs
def info(self):
print(f"name:{self.name},legs:{self.legs}")
class dog(animal): #类的继承
pass
class cat(animal): #类的继承
def walk(self):
print(f"{self.name}用{self.legs}条腿走路")
a = dog("汪汪",4)
a.info()
b=cat("喵喵",4)
b.info()
b.walk()
#5、类的私有变量和私有方法
class animal:
def __init__(self,name,legs):
self.name = name
self.legs = legs
self.__age = 10
def info(self):
print(f"name:{self.name},legs:{self.legs}")
#{self.__age} 可以在自己的类内部使用
def __test(self): #私有方法
print("私有方法")
class dog(animal): #类的继承
pass
class cat(animal): #类的继承
def walk(self):
print(f"{self.name}用{self.legs}条腿走路")
#{self.__age}不可以在外部类使用
a = dog ("汪汪", 4)
a.info()
b = cat("喵喵", 4)
b.info()
#6、类的属性方法
class person:
def __init__(self,name):
self.__name = name #self.__name 类的变量私有化
@property #加上 return 就可以变量私有化访问
def name(self):
return self.__name
@name.setter
def name(self,value):
self.__name = value
a = person("zhang")
print(a.name) #print(a.__name)类的外部访问汇报错
a.name = "list"
print(a.name)