題目:
1. 定義乙個類,產生一堆物件
2. 統計產生了多少個物件
'''思路:定義乙個計數器,每產生乙個物件,計數器加1'''
class student():
count = 0
def __init__(self, name, age):
self.name = name
self.age = age
student.count += 1
s1 = student()
print(s1.count)
s2 = student()
print(s2.count)
s3 = student()
print(s3.count)
繫結方法分為2種:
1.繫結給物件的
# class student():
# school = 'sh'
# country = 'china'
# # def __init__(self,name,age):
# self.name = name
# self.age = age
# # 繫結給物件的方法,物件來呼叫,會把自己當成第乙個引數傳到函式裡面self
# # def inner(self):
# print('%s今年%s歲了' % (self.name, self.age))
# # def func(self):
# print('%s明年%s歲了'%(self.name,self.age+1))
# # stu = student('henry',18)
# stu1 = student('jason',17)
# # # stu.func() # # stu.func(stu)
# stu1.inner() # stu1.inner(stu)
2.繫結給類的
# class mysql():
# def __init__(self,ip,port):
# self.ip = ip
# self.port = port
# # @classmethod
# def from_conf(cls):
# # cls => orancle
# # stu = mysql(settings.i, settings.port)
# stu = cls(settings.ip,settings.port)
# return stu
# #
# stu = mysql(settings.ip,settings.port)
# stu1 = stu.from_conf()
# mysql.from_conf()
# 既不繫結給類 也不繫結給物件
# class student():
# def __init__(self,name,age):
# self.name = name
# self.age = age
# self.id = self.get_id()
# # @staticmethod # 靜態方法
# def get_id():
# import uuid
# return uuid.uuid4()
# #
# stu = student('jason',18)
# print(stu.id)
# print(student.get_id())
"""
隱藏屬性的特點:
1.在類定義階段發生了形變:發生了語法上的形變_類名__屬性名
2.隱藏對內不對外
3.只有在定義階段發生形變,其他情況都不發生形變
為什麼要隱藏:
對內部的屬性或者方法做隱藏 可以更好的限制外部使用者 要想讓外部訪問 在類內部定義對外部可訪問的介面
可以達到對外部資料的嚴格控制
"""# class student():
# __school = 'sh'
# # def __init__(self,name,age):
# self.name = name
# self.age = age
# # def set_school(self,v):
# if type(v) is not str:
# print('輸入內容不合法')
# return
# self.__school = v
# # def get_school(self):
# return self.__school
# # stu = student('jason',18)
# stu.set_school(1)
# print(stu._student__school)
# print(stu.get_school())
# class student():
# __school = 'sh'
## def __init__(self,name,age):
# self.__name = name
# self.age = age
# @property
# def name(self):
# return 'name:%s' % self.__name
## @name.setter
# def name(self,v):
# if type(v) is not str:
# print('輸入內容不合法')
# return
# self.__name = v
# @name.deleter
# def name(self):
# print('不讓刪')
## stu = student('jason',18)
# # print(stu.name)
# stu.name = 123
# print(stu.name)
# del stu.name
# 小練習
# class bmi():
# def __init__(self,height,weight):
# self.height = height
# self.weight = weight
## @property
# def get_bim(self):
# return self.weight / (self.height ** 2)
## bmi = bmi(1.8,70)
# print(bmi.get_bim)
# 了解
# class student():
# __school = 'sh' # _student__school => _類名__屬性名
## def __init__(self, name, age):
# self.__name = name
# self.age = age
## def __tell_info(self): # _student__tell_info => _類名__函式名
# print('name: %s, age: %s' % (self.__name, self.age))
## def get_name(self):
# return "name:%s" % self.__name
## def set_name(self, v):
# if type(v) is not str:
# print('資料型別不合法')
# # if isinstance(v, str):
# return
# self.__name = v
## def del_name(self):
# print('不讓刪')
## # 了解
# name = property(get_name, set_name, del_name)
python類的繫結方法與非繫結方法
一 繫結方法 首先我們明確乙個知識點,凡是類中的方法或函式,預設情況下都是繫結給物件使用的。下面,我們通過例項,來慢慢解析繫結方法的應用。class people def init self,name,age self.name name self.age age deftalk self pass...
python基礎 類的繫結方法與非繫結方法(詳解)
三 類的繫結方法 四 非繫結方法 python中,類中的方法有兩類,繫結方法和非繫結方法,今天就來研究一下。參考博文 1 繫結方法的定義繫結給誰,就由誰來呼叫,誰來呼叫就把它當作乙個引數自動傳入。2 物件的繫結方法 在學習和工作中,我們最常用的就是物件的繫結方法,在python中,凡是類中的方法或函...
類和物件的繫結方法與非繫結方法
類的定義方法大致可以分為兩類 繫結方法和非繫結方法 其中繫結方法又可以分為繫結到物件的方法和繫結到類的方法 class person def init self,name,age self.name name self.age age defprint name self print self.na...