-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpy41.py
More file actions
147 lines (83 loc) · 3.61 KB
/
py41.py
File metadata and controls
147 lines (83 loc) · 3.61 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
""" کلاس ها """
# کلاس ها یک یک الگو هستند برای نمونه های مختلف
# ما میتوانیم هر چند نمونه از این الگو بسازیم با مقادیر متفاوت
# کلاس ها شامل اتریبیوت(صفات) و متد(رفتار) ها هستند
""" ساخت کلاس """
class Person:
pass
#########################################################
""" ساخت نمونه از کلاس(شی)"""
P_1 = Person()
P_2 = Person()
#########################################################
"""اتریبیوت ها (صفات)"""
#صفت کلاس
# خارج از متد صفت و رفتار به صورت ساده تعریف میکنیم
class Gatt:
online = 0
def __init__(self) -> None:
pass
# با خود کلاس مستوان به آن دسترسی داشت
print(Gatt.online)
# برای دادن صفت به هر نمونه
P_1.name = 'mohammad'
P_2.age = 18
# گرفتن صفت
P_1.name # mohammad
# مقدار دهی اولیه صفت ب محض ساخت نمونه
# ایجاد صفت برای نمونه در زمان ساخت
class Att:
def __init__(self,name,family='karimpour'):
self.A_name = name
self.A_family = family # <= برای نمونه یک صفت میسازد و آن را با ورودی مقدار دهی میکند
self.A_age = 18
# __init__ به محض ساخت نمونه اجرا خواهد شد
# self اولین ورودی هر متدی(صفت - متد)که به صورت قراردادی اسمش سلف هست دقیقا همان نمونه ای هست که ساختید
# مثال => def __init__(A_1 ,name ,family)
# مابقی ورودی هارا بعد از سلف مینویسیم
# ساخت نمونه
Att_m = Att('mohammad','karimpour')
Att_s = Att('sana','ghamisheh') #Att_s.A_name = sana
###################################################################
""" ساخت متد(رفتار) """
class Met:
def FullName(self):
print('mohammad karipmour')
# self اولین ورودی هر متدی(صفت - متد)که به صورت قراردادی اسمش سلف هست دقیقا همان نمونه ای هست که ساختید
# مثال => M_6.FullName() = Met.FullName(M_6)
# مثال => M_7.FullName() = def FullName(M_7)
# مابقی ورودی هارا بعد از سلف مینویسیم
# صدا زدن متد برای نمونه
M_1 = Met()
M_1.FullName() # => mohammad karimpour
# class method
# متد که فقط صفت های خود کلاس را میشناسد
class clme:
online = 12
# ورودی اول همان کلاس مد نظر است که به صورت قرار دادی اسمش این است
@classmethod
def changeOnline(cls,num:int):
cls.online = num
clme.changeOnline(16)
clme.online # => 16
#staticmethod
# متد که هیچ ربطی به کلاس و نمونه ندارد
# ورودی اول هیچ وابستگی ندارد و اختیاری است
class staticmtd:
@staticmethod
def className():
print(staticmtd.__doc__)
###################################################################
""" یک نمونه کلی """
class User:
def __init__(self,name,family,age):
self.name = name
self,family = family
self.age = age
def FullName(self,ids=1):
print(f'{ids}- my name is {self.name, self.family} and my age is {self.age}')
user_M = User('mohammad','karimpour',19)
user_F = User('faeze','amini',18)
user_F.age # 18
user_M.FullName(2) # 2- my name is mohammad karinpour and my age is 19
user_F.FullName(5) # 5- my name is faeze amini and my age is 18