python 3 类的用法(自动化)

#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)


版权声明:本文为qq_60832550原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。