# _*_ coding:utf-8 _*_
java中的类方法和静态方法是没有差别的,但是python中是有区别的,这个说的很清楚https://www.cnblogs.com/giserliu/p/5785082.html
'''
class LeiMing():
#类文档说明
属性
方法
'''
class person():
'''
fffff
'''
# 类属性
country = '中国'
# 实例属性 通过构造方法来声明
#self 不是关键字,代表的是当前的对象
def __init__(self, name, age, sex):#构造方法,构造方法不需要调用,在实例化的时候自动调用
print('我是构造方法,在实例化的时候调用')
self.name = name #通过self(==this) 创建实例属性,并且赋值
self.age = age
self.sex = sex
#创建普通方法
def getName(self):
print('我的名字叫:%s'%self.name) #在方法里面使用使用实例属性
# 静态方法
@staticmethod
def getA(): # 不需要传递实例self
# 静态方法只能访问类属性
print(person.country)
@classmethod
def bb(cls): #class 也不是关键字
#类方法也不能访问实例属性
print(cls.country)
#实例化对象
people01 = person('hha',19,'男')
# print(people01.sex)
# people01.getName()
# print(person.country)
#通过
#针对类的属性方法
# getattr hasattr setattr delattr
#print(getattr(people01,'name'))
# print(person.__doc__)
people01.getA()
person.getA()
people01.bb()
person.bb()
# _*_ coding:utf-8 _*_
class Animal():
def __init__(self, name, food):
self.name = name
self.food = food
def eat(self):
print('%s爱吃%s'%(self.name, self.food))
class Dog(Animal) :
def __init__(self, name, food, drink,address):
# super(Dog, self).__init__(name, food)#加载父类构造方法
#Animal.__init__(self, name, food)
super().__init__(name, food)
self.drink = drink
self.__address = address
def drinks(self):
print('%s爱喝%s,地址%s' % (self.name, self.drink,self.__address))
#双下划线开头的未私有属性
dog = Dog('金毛','范','水','福建省')
dog.eat()
dog.drinks()
print(dog.name)