python---面向对象方法
#类里面的其他方法
#公有的变量,随着类一起被定义
1、类方法
意思:不需要实例化也可以调用的方法
特点:通过类名直接调用,但是不能调用实例方法,可以调用类变量以及其他类方法
定义:在方法前加上@classmethod
import time
class Person: #定义这个类,# 类变量:公共的 随着类一起定义
country = "中国"
def fly(self):
print("fly")
def say(self, msg): # 实例方法
print(msg)
@classmethod #定量,装饰器 类方法
def help(cls): #类的作用是干什么的
#类方法,不需要实例化就可以调用的,它无法使用实例属性,它也无法调用实例方法,它可以调用其他的类方法
print("这个类的作用是用来造人的")
cls.help2()
print(cls.country)
@classmethod
def help2(cls):
cls.help() #调用
2、静态方法
@staticmethod #装饰,就是普通函数,只不过写在类里面,只是放在这里,无法调用其他方法,和类无关
def help3():
print("help3")
def __init__(self, name):
self.name = name
3、属性方法
#调用的时候不需要加上括号,不能传参
def __init__(self, name,birth):
self.name = name
self.birth = birth
@property #修饰
def age(self):
return int(time.strftime("%Y")) - self.birth
ws = Person("王帅",1998) #调用
print(ws.age)
4、实例变量与实例方法
#带有self的,必须实例化才能调用的方法
def __init__(self,name):
self.__name=name #实例变量 带self的 self.xxx
def run(self):
print("%s,run"%self.__name)
调用:
bmw=Car("宝马")
bmw.run()
变量取值:
数据转化为字典:__dict__
import faker
f=faker.Faker(locale="zh_CN")
class Student:
def __init__(self,name,age,_class,addr,email,country="china"):
self.name=name
self.age=age
self._class=_class
self.addr=addr
self.email=email
self.country=country
lxp=Student(f.name(),26,"天马","1@qq.com","China")
# 可以通过类.取数据
print(lxp.name)
# 转化为字典
print(lxp.__dict__)
结果:{'name': '李刚', 'age': 26, '_class': '天马', 'addr': '1@qq.com', 'email': 'China', 'country': 'china'}

浙公网安备 33010602011771号