#要想访问私有变量可以这样
class Person:
def __init__(self,name):
self._name=name
def name(self):
return self._name
#使用
print(p1.name())
#或者加一个装饰器
class Person:
def __init__(self,name):
self._name=name
@property
def name(self):
return self._name
#使用
print(p1.name)
#还可以更改
class Person:
def __init__(self,name):
self._name=name
@property
def name(self):
return self._name
@name.setter
def name(self,value):
self._name=value
#类的私有属性和私有方法
class Animal:
def __init__(self,name,legs):
self.name
self.legs=legs
self.age=10#普通变量
self.__age=10#表示私有变量,不能被继承,只能在自己类的内部使用,父类的方法中可以访问到
def info(self)
print(f'name:{self.name},legs:{self.legs}')
self.__private_info()#在类的内部访问私有方法
def __private_info(self):
print(f'private_info')
class Person:
name="xiaoming" #类变量
#定义一个方法
def say_hello(self):
print(f'hello{Person.name}')
#1.访问类变量
print(Person.name)
#2.访问类中定义的方法
#先实例化类
p=Person()
p.say_hello()
类就是把一些共有的东西抽象出来
类变量通过类命名方式去修改会影响所有实例 如Person.name="zhangsan"
而 p.name=张三仅仅改变P这一个实例
使用构造器
class Person:
def __init__(self,name):
self.username=name #实列变量
self.age=10 #直接写死
def say_hello(self): #self就是表示类的实例
print(f'hello{self.username},age:{self.age}') #在方法中引用都是通过self关键字
#使用
p1=Person('张三')
p1.say_hello()
类变量和实例变量的区别
修改类变量所有实例变量都会改变
修改实例变量仅实例变量这一个实例改变
class Employee:
up=0.1
def __init__(self,name,salary):
self.username=name
self.salary=salary
def up_salary(self)
self.salary=self.salary*(1+Employee.up)#用的是类变量的方式
class Employee:
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)
#类的继承!
class Animal:
def __init__(self,name,legs):
self.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}条腿走路')
#使用
c=Cat('喵喵',4)
c.info()
c.walk()
#还可以重新实现父类的方法
class Dog(Animal):
#会把父类中的 info 方法覆盖
def info(self,others):
print(f'name:{self.name},legs:{self.legs},{others}')
对象:一个一个的个体,实实在在的东西
类:对象的模板,再根据模板创造出对象来
1.类的创建
class People:#类的名字,下面写定义People类的一些数据,函数
def __init__(self):#初始化函数或者构造函数,作用当我们通过People类去创造对象的时候就会走到这个函数里面去
print('调用__init__')
这就简单创建了一个类
2.根据类来创建对象
caixukun = People()
class People:#类的名字,下面写定义People类的一些数据,函数
def __init__(self,name,age,sex,techang):#初始化函数或者构造函数,作用当我们通过People类去创造对象的时候就会走到这个函数里面去
print('调用__init__')
成功调用了初始化函数,初始化函数也可以加参数
传参
caixukun = People(name:'蔡徐坤',age:23,sex:'男',techang:['唱’,'跳','rap'])
class People:#类的名字,下面写定义People类的一些数据,函数
def __init__(self):#初始化函数或者构造函数,作用当我们通过People类去创造对象的时候就会走到这个函数里面去
print('调用__init__')
def koutouchan(self,string)
print(string)
def ziwojieshao(self,string)
print(string)
给类添加函数
使用
caixukun.koutouchan('你干嘛哎哟')
想要对象拥有name属性就得改为
class People:#类的名字,下面写定义People类的一些数据,函数
def __init__(self,name,age,sex,techang):#初始化函数或者构造函数,作用当我们通过People类去创造对象的时候就会走到这个函数里面去
self.name=name
self.age=age
self.sex=sex
self.techang=techang
print('调用__init__')